Domain Modelingの大まかな流れ
初期段階
ビジネスのDomainについて理解を深めながら、Domain Objectを探す
この辺で、domainに対する大雑把な流れを理解した状態になる
参考
Entityを設計していく前段階
このタイミングでtable設計をするわけではない
Entityを型で作っていくイメージに近い
個別のEnittyから作るのではなく、Workflowを型に落とし込むことからやる
Domain Modelの解像度を上げて、Entityを量産する
上の手順で抽出したEntityを詳細に見ていく
小さく分割したり、0から新しい概念を生み出したりする作業を行う
Entity同士の関係も型で記述する
個々の値を型で表現し、上限・下限も書く
後の手順でまだブラッシュアップすることになるので、ここで完璧なEntityを作る必要はないmrsekut.icon
いったん手が詰まったら先に進んでも良い
参考
Entity同士の関係性やlifecycleに着目してグルーピングをする
必要ならば更にPackagingする
小さくEntityを分割したあとに、Aggregate、Packageのようにグルーピングする
この順序が重要。最初からグルーピングしない
参考
Entity同士を状態を確認しながら接続していく
状態を設計する
実装を進める中で洞察を深める
フィードバックループ、モデルと実装の行き来、Domain Expertとの認識合わせ、
また、それによるリファクタリングを繰り返すことで、
よりドメインに対する洞察を深め、それをコードに落とし込む
変更が起きやすいが部分を柔軟にする
table設計を行う
これ、度のタイミングでやるのが良いんだ
別にこれを先にやる必要もないのか?mrsekut.icon
むしろ後にやるべき?
そう。
ドメイン分析はclass図の方がやりやすく、
どれがあれば割と自明にtable設計は機械的にやっていけるし
tableの設計を考えると、永続性を意識することになるので、より状態に敏感になれそう
だから、Domein modelingが行き詰まったら、途中でtable設計をすることで、思考が進むmrsekut.icon
Domain Modelを実装に落とし込む
memo
参考